/*
 * @Description: 标签 DTO 文件
 * @Author: fhw
 * @Date: 2024-06-15
 */

import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { IsString, IsInt, IsOptional, MaxLength, Min } from 'class-validator';
import { DiffDto, PageDto } from 'src/common/dto/dto';

/** 创建标签 DTO */
export class CreateTagDto extends DiffDto {
    @ApiProperty({ example: '动作', description: '标签名称' })
    @IsString({ message: '名称必须是字符串' })
    @MaxLength(50, { message: '名称长度不能超过50个字符' })
    name: string;

    @ApiProperty({ example: 'zh', description: '语言' })
    @IsString({ message: '语言必须是字符串' })
    @MaxLength(50, { message: '语言长度不能超过50个字符' })
    lang: string;
}

/** 更新标签 DTO */
export class UpdateTagDto {
    @ApiProperty({ example: 1, description: '标签ID' })
    @IsInt({ message: 'ID必须是整数' })
    @Min(1, { message: 'ID必须大于0' })
    id: number;

    @ApiProperty({ example: '冒险', description: '标签名称' })
    @IsString({ message: '名称必须是字符串' })
    @MaxLength(50, { message: '名称长度不能超过50个字符' })
    name: string;

    @ApiProperty({ example: 'zh', description: '语言' })
    @IsString({ message: '语言必须是字符串' })
    @MaxLength(50, { message: '语言长度不能超过50个字符' })
    lang: string;
}

/** 获取标签列表 DTO */
export class GetTagDto extends PageDto {
    @ApiPropertyOptional({ example: '动作', description: '标签名称' })
    @IsOptional()
    @IsString({ message: '名称必须是字符串' })
    @MaxLength(50, { message: '名称长度不能超过50个字符' })
    name?: string;

    @ApiPropertyOptional({ example: 'zh', description: '语言' })
    @IsOptional()
    @IsString({ message: '语言必须是字符串' })
    @MaxLength(50, { message: '语言长度不能超过50个字符' })
    lang?: string;
}
